package com.lee.config;

import org.springframework.core.io.ClassPathResource;
import org.springframework.security.oauth2.provider.token.store.KeyStoreKeyFactory;

import java.security.KeyPair;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;

/**
 * @Description TODO
 * @Author winston
 * @DateTime 2021/11/29
 */
public class KeyConfig {

	private static final String KEY_STORE_FILE = "jwt.jks";
	private static final String KEY_STORE_PASSWORD = "123456";
	private static final String KEY_ALIAS = "jwt";
	private static KeyStoreKeyFactory KEY_STORE_KEY_FACTORY =
			new KeyStoreKeyFactory(new ClassPathResource(KEY_STORE_FILE), KEY_STORE_PASSWORD.toCharArray());

	static RSAPublicKey getVerifierKey() {
		return (RSAPublicKey) getKeyPair().getPublic();
	}

	static RSAPrivateKey getSignerKey() {
		return (RSAPrivateKey) getKeyPair().getPrivate();
	}

	private static KeyPair getKeyPair() {
		return KEY_STORE_KEY_FACTORY.getKeyPair(KEY_ALIAS);
	}

}
